As technology has progressed, the processing capability of computer systems has increased dramatically. Today's computer systems offer a set of features that enables rich user experiences for every application that is hosted on them. Thus the progress has led to a dramatic increase in the types of software applications which can be hosted and executed on the computer systems. This also led to increase in the functionality of these hosted software applications. Additionally, technological advancements have led the way for multiple computer systems, each executing multiple software applications, to be easily connected together via a network. Accordingly, software applications have become larger and more complicated in design. This increased complexity and scale in software application design present difficult challenges in assessing software.
To measure and improve the quality of conventional software applications, use of software instrumentation is an effective solution. Further, it is possible to determine the cause for a software application failure by examining the data gathered by various instruments. By analysing the gathered data over a time-scale, it is possible to identify recurring problems in software applications before they can cause massive damage. Furthermore, it is also possible to identify and solve associated software quality issues based on the analysed data. Such causal analysis of the context in which the failure happens can then lead to an improvement in overall software quality.
Conventionally, monitoring events in computing environment has been difficult to achieve. Conventional operating systems provide Management and
Instrumentation frameworks and performance counters to monitor application resource usage and execution status. Usually the operating system's event management framework facilitates recording the application errors and proprietary events in a standard, centralized way in the form of an event log which can then be examined using the resident event viewer or by using a programming interface. To this end, the event logging is helpful for recording important events, such as low resource availability, authentication failure, etc., examining which can determine the conditions that cause the error/event to occur.
Further, if the event logging is built into an application then many of the application specific events can be captured in the event log and its trace can provide the sequence of operations that are performed in a software application. However, operating system specific events, GUI events, network events that are triggered when this application is used are not captured, which means the operating system events are not subscribed by the software application. This is a cause for concern as all software applications run on top of an operating system and it becomes difficult to pin-point the exact reason for a software failure.
Therefore, for the collected event data to be meaningful, it is necessary to capture events pertaining to an operating system as well as all applications, processes and services that run on top of the operating system. This necessitates the need for global context based instrumentation with regard to event capturing, filtering and recording.
Hence, there is a need for a system that provides global context based instrumentation to assert the quality of software applications.